package modelo;
import bean.Conexion;

import java.awt.Image;
import java.io.File;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


public class CajaDAO  extends ConexionDao{
	
	public CajaDAO() {
		super();	
	
	}	
	

	/*String id_caja, String status_caja, Double montoefectivo_caja,
			ArrayList<Movimiento> arraymovimientos*/

	public void registrarCaja(Caja caja) {
		String tiraSQL = "INSERT INTO caja "+
		 				 "(id_caja, nombre_caja, status_clien, montoefectivo_caja) "+
		 				 "VALUES ('"+caja.getId_caja()+"', '"+caja.getStatus_caja()+
		 				 "'," + caja.getMoentoefectivo_caja() + ")";
		Conexion.ejecutar(tiraSQL);
	}
	
	
	public ArrayList<Caja> consultarCaja() {
		ArrayList<Caja> cajas = new ArrayList<Caja>();
		String tiraSQL = "SELECT * FROM caja";
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		MovimientoDAO movimientoDAO = null;
		ArrayList<Movimiento> arrayMovimiento;
		try {
			while (resultSet.next()) {
				
				String id = resultSet.getString("id_caja");
				String status = resultSet.getString("status_clien");
				Double monto = resultSet.getDouble("montoefectivo_caja");
				
				
				arrayMovimiento = movimientoDAO.consultarMovimientos();
				
				Caja caja = new Caja(id, status, monto, arrayMovimiento);
				cajas.add(caja);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return cajas;
	}
	
	public ArrayList<Caja> consultarCajaPorFecha(Date fecha) {
		ArrayList<Caja> cajas = new ArrayList<Caja>();
		String tiraSQL = "SELECT * FROM caja";
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		MovimientoDAO movimientoDAO = null;
		ArrayList<Movimiento> arrayMovimiento;
		try {
			while (resultSet.next()) {
				
				String id = resultSet.getString("id_caja");
				String status = resultSet.getString("status_clien");
				Double monto = resultSet.getDouble("montoefectivo_caja");
				
				
				arrayMovimiento = movimientoDAO.consultarMovimientoPorFecha(fecha);
				
				Caja caja = new Caja(id, status, monto, arrayMovimiento);
				cajas.add(caja);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return cajas;
	}
	
	
	// Modificar
	public void modificarCaja(Caja caja) {
		
		String tiraSQL = "UPDATE caja SET id_clien = '" + caja.getId_caja() + "', status_caja = '"+ caja.getStatus_caja()
				+"' montoefectivo_caja = "+ caja.getMoentoefectivo_caja() + " WHERE id_caj ='" + caja.getId_caja()+ "'";
				
		Conexion.ejecutar(tiraSQL);
	}
	
	
	// Eliminacion Fisica
		public void eliminarFisicaCaja(String id) {
			String tiraSQL =  "DELETE FROM caja WHERE id_caja = '"+ id + "'";
									
			Conexion.ejecutar(tiraSQL);
		}

		

		// Eliminacion Logica
		public void eliminarLogicaCaja(Caja caja) {
			//Estatus cuando se elimina es "inactivo"?
			
			String tiraSQL = "UPDATE caja SET id_clien = '" + caja.getId_caja() + "', status_caja = '"+ caja.getStatus_caja()
					+"' montoefectivo_caja = "+ caja.getMoentoefectivo_caja() + " WHERE id_caj ='" + caja.getId_caja()+ "'";
					
			Conexion.ejecutar(tiraSQL);
		}

		
		
		
}
